home *** CD-ROM | disk | FTP | other *** search
/ The PC-SIG Library 10 / The PC-Sig Library - Shareware for the IBM PC and Compatibles (PC-SIG)(Tenth Edition Disks 1-2804)(1991).iso / PC_SIGCD / 09 / 2 / DISK0921.ZIP / GLIDER.BAS < prev    next >
BASIC Source File  |  1987-09-29  |  8KB  |  278 lines

  1. ' PROGRAM "GLIDER"
  2.  
  3. ' COPYRIGHT (C) 1982 BY DAVID EAGLE
  4.  
  5. ' PUBLIC DOMAIN FOR IBM-PC ON AUGUST 20, 1986
  6.  
  7. ' IBM-PC  << QUICKBASIC COMPILER VERSION 3.0 >>
  8.  
  9. ' DETERMINES MAXIMUM RANGE AND MAXIMUM ENDURANCE
  10. ' FLIGHT PERFORMANCE OF GLIDERS, SAILPLANES, ETC.
  11.  
  12. ' GLIDE SPEED, METERS PER SECOND
  13. ' GLIDE ANGLE, DEGREES
  14. ' HORIZONTAL RANGE, METERS
  15. ' RATE-OF-DESCENT, METERS PER MINUTE
  16. ' LIFT-TO-DRAG RATIO, NON-DIMENSIONAL
  17.  
  18. '*********************************************************
  19.  
  20. DEFDBL A-Z
  21.  
  22. DEF FNA(X)=(1D0-2.2556913D-5*X)^4.256116D0
  23.  
  24. CONST PI=3.14159265D0
  25. CONST RHOSL=1.22557D0
  26. CONST GRAVITY=9.80665D0
  27. CONST RTD=180D0/PI
  28.  
  29. CLS
  30. PRINT
  31. PRINT
  32. PRINT "Program GLIDER"
  33. PRINT "(C) Copyright 1982 by David Eagle"
  34. PRINT
  35. PRINT "Microsoft QuickBASIC Compiler"
  36. PRINT "(C) Copyright Microsoft Corp. 1982-1987"
  37. PRINT
  38. CALL KEYCHECK
  39.  
  40. CLS
  41. PRINT
  42. PRINT
  43. INPUT "Introduction ( y = yes, n = no ) ";A$
  44. IF INSTR("yY",A$) THEN CALL INTRO
  45.  
  46. DO
  47.    CLS
  48.    PRINT
  49.    PRINT TAB(33);"Program GLIDER"
  50.    PRINT
  51.    PRINT
  52.    PRINT "Launch site altitude ( meters )"
  53.    INPUT ALTSITE
  54.    PRINT
  55.    PRINT "Launch site temperature ( degrees F )"
  56.    INPUT TEMPSITE
  57.  
  58.    ' DETERMINE LAUNCH SITE AMBIENT DENSITY
  59.  
  60.    RHOSITE=RHOSL*FNA(ALTSITE)/(1D0+(TEMPSITE-59D0)/518.67D0)
  61.  
  62.    ' REQUEST USER INPUTS
  63.  
  64.    PRINT
  65.    PRINT "Flight altitude ( meters )"
  66.    INPUT ALTITUDE
  67.    PRINT
  68.    PRINT "Wingspan ( centimeters )"
  69.    INPUT WINGSPAN
  70.    WINGSPAN=.01D0*WINGSPAN
  71.    PRINT
  72.    PRINT "Wing area ( square centimeters )"
  73.    INPUT WINGAREA
  74.    WINGAREA=.0001D0*WINGAREA
  75.    PRINT
  76.    PRINT "Mass ( grams )"
  77.    INPUT MASS
  78.    MASS=.001D0*MASS
  79.    PRINT
  80.    PRINT "Zero-lift drag coefficient ( non-dimensional )"
  81.    INPUT CD0
  82.    PRINT
  83.    PRINT "Efficieny factor ( non-dimensional )"
  84.    INPUT EFACTOR
  85.  
  86.    ' COMPUTE ASPECT RATIO, EFFICIENCY PARAMETER, DENSITY AND WEIGHT
  87.  
  88.    ASPECT=WINGSPAN*WINGSPAN/WINGAREA
  89.    K1=PI*ASPECT*EFACTOR
  90.    RHO=RHOSITE*FNA(ALTITUDE)
  91.    WEIGHT=GRAVITY*MASS
  92.  
  93.    ' DETERMINE MAXIMUM RANGE FLIGHT CONDITIONS
  94.  
  95.    LIFT1=SQR(CD0*K1)
  96.    DRAG1=2D0*CD0
  97.    GANGLE1=ATN(DRAG1/LIFT1)
  98.    GSPEED1=SQR(2D0*WEIGHT*COS(GANGLE1)/(RHO*WINGAREA*LIFT1))
  99.    ROD1=GSPEED1*SIN(GANGLE1)
  100.    RANGE1=ALTITUDE/TAN(GANGLE1)
  101.  
  102.    ' DETERMINE MAXIMUM ENDURANCE FLIGHT CONDITIONS
  103.  
  104.    LIFT2=SQR(3D0*K1*CD0)
  105.    DRAG2=4D0*CD0
  106.    GANGLE2=ATN(DRAG2/LIFT2)
  107.    GSPEED2=SQR(2D0*WEIGHT*COS(GANGLE2)/(RHO*WINGAREA*LIFT2))
  108.    ROD2=GSPEED2*SIN(GANGLE2)
  109.    RANGE2=ALTITUDE/TAN(GANGLE2)
  110.  
  111.    ' PRINT RESULTS
  112.  
  113.    CLS
  114.    PRINT
  115.    PRINT
  116.    PRINT TAB(25);"MAXIMUM RANGE GLIDE CONDITIONS"
  117.    PRINT
  118.    PRINT
  119.    CALL PDATA(GANGLE1,GSPEED1,ROD1,RANGE1,LIFT1,DRAG1)
  120.  
  121.    CLS
  122.    PRINT
  123.    PRINT
  124.    PRINT TAB(23);"MAXIMUM ENDURANCE GLIDE CONDITIONS"
  125.    PRINT
  126.    PRINT
  127.    CALL PDATA(GANGLE2,GSPEED2,ROD2,RANGE2,LIFT2,DRAG2)
  128.  
  129.    CLS
  130.    PRINT
  131.    PRINT
  132.    INPUT "Another selection ( y = yes, n = no ) ";A$
  133.    IF INSTR("nN",A$) THEN EXIT DO
  134. LOOP
  135.  
  136. END
  137.  
  138. '*********************************************************
  139.  
  140. SUB PDATA(GANGLE,GSPEED,ROD,RANGE,LIFT,DRAG) STATIC
  141.  
  142.     ' PRINT SUBROUTINE
  143.  
  144.     FORMAT$="#######.####"
  145.  
  146.     PRINT
  147.     PRINT TAB(5);"Glide speed          ( meters per second )";
  148.     PRINT USING FORMAT$;TAB(55);GSPEED
  149.     PRINT
  150.     PRINT TAB(5);"Glide angle          ( degrees )";
  151.     PRINT USING FORMAT$;TAB(55);GANGLE*RTD
  152.     PRINT
  153.     PRINT
  154.     PRINT TAB(5);"Horizontal range     ( meters )";
  155.     PRINT USING FORMAT$;TAB(55);RANGE
  156.     PRINT
  157.     PRINT TAB(5);"Rate-of-descent      ( meters per minutes )";
  158.     PRINT USING FORMAT$;TAB(55);60D0*ROD
  159.     PRINT
  160.     PRINT
  161.     PRINT TAB(5);"Lift-to-Drag ratio   ( non-dimensional )";
  162.     PRINT USING FORMAT$;TAB(55);LIFT/DRAG
  163.     PRINT
  164.     CALL KEYCHECK
  165.  
  166. END SUB
  167.  
  168. '*********************************************************
  169.  
  170. SUB INTRO STATIC
  171.  
  172.     ' DOCUMENTATION SUBROUTINE
  173.  
  174.     CLS
  175.     PRINT
  176.     PRINT
  177.     PRINT "     PROGRAM 'GLIDER' IS AN INTERACTIVE BASIC COMPUTER PROGRAM WHICH CAN BE USED";
  178.     PRINT "TO DETERMINE BOTH THE MAXIMUM RANGE AND MAXIMUM ENDURANCE FLIGHT CONDITIONS FOR";
  179.     PRINT "MODEL ROCKET BOOST GLIDERS. THESE ARE THE FLIGHT CONDITIONS WHEN THE GLIDER";
  180.     PRINT "WILL FLY THE FARTHEST OR STAY IN THE AIR THE LONGEST TIME. THE 'GLIDER' SOFTWARE";
  181.     PRINT "COMPENSATES FOR THE VARIATION IN DENSITY AT THE INITIAL GLIDE ALTITUDE AND 'NON-";
  182.     PRINT "STANDARD' FLYING CONDITIONS SUCH AS HOT OR COLD DAYS OR FLYING SITES WHICH ARE";
  183.     PRINT "NOT AT SEA LEVEL. THESE UNIQUE FEATURES WILL PROVIDE THE USER WITH AN ACCURATE";
  184.     PRINT "PREDICTION OF THE MOTION OF GLIDERS."
  185.     PRINT
  186.     PRINT "     PROGRAM 'GLIDER' WILL PROMPT THE USER FOR SEVERAL INPUTS NECESSARY FOR THE";
  187.     PRINT "SOFTWARE TO WORK PROPERLY. THIS IS A DESCRIPTION OF THESE REQUESTS AND A SHORT";
  188.     PRINT "DISCUSSION OF HOW THE USER SHOULD RESPOND.";
  189.     CALL KEYCHECK
  190.     CLS
  191.     PRINT
  192.     PRINT "     LAUNCH SITE ALTITUDE ( METERS )"
  193.     PRINT
  194.     PRINT "THE USER RESPONSE SHOULD BE THE ALTITUDE AT THE FLYING SITE IN METERS. FLYING";
  195.     PRINT "SITES ABOVE SEA LEVEL ARE POSITIVE AND THOSE BELOW SEA LEVEL ARE NEGATIVE."
  196.     PRINT
  197.     PRINT "     LAUNCH SITE TEMPERATURE ( DEGREES F )"
  198.     PRINT
  199.     PRINT "THE RESPONSE TO THIS REQUEST SHOULD BE THE TEMPERATURE AT THE FLYING SITE IN";
  200.     PRINT "DEGREES FAHRENHEIT."
  201.     PRINT
  202.     PRINT "     FLIGHT ALTITUDE ( METERS )"
  203.     PRINT
  204.     PRINT "AT THIS POINT THE USER SHOULD INPUT THE INITIAL FLIGHT ALTITUDE OF THE GLIDER IN";
  205.     PRINT "METERS. THIS IS THE ALTITUDE ABOVE THE FLYING SITE WHEN THE GLIDE BEGINS."
  206.     PRINT
  207.     PRINT "     WINGSPAN ( CENTIMETERS )"
  208.     PRINT
  209.     PRINT "THE USER SHOULD RESPOND WITH THE WINGSPAN OF THE GLIDER IN CENTIMETERS. THIS";
  210.     PRINT "IS THE DISTANCE FROM WINGTIP TO WINGTIP."
  211.     CALL KEYCHECK
  212.     CLS
  213.     PRINT
  214.     PRINT "     WING AREA ( SQUARE CENTIMETERS )"
  215.     PRINT
  216.     PRINT "THE USER SHOULD INPUT THE WING AREA OF THE GLIDER IN SQUARE CENTIMETERS."
  217.     PRINT
  218.     PRINT "     MASS ( GRAMS )"
  219.     PRINT
  220.     PRINT "THE RESPONSE TO THIS REQUEST SHOULD BE THE MASS OF THE GLIDER IN GRAMS."
  221.     PRINT
  222.     PRINT "     ZERO-LIFT DRAG COEFFICIENT ( NON-DIMENSIONAL )"
  223.     PRINT
  224.     PRINT "THE USER SHOULD INPUT THE 'NO-LIFT' DRAG COEFFICIENT. THIS IS THE PLANFORM DRAG";
  225.     PRINT "COEFFICIENT WHICH IS USUALLY DETERMINED FROM WIND TUNNEL TESTS. TYPICAL VALUES";
  226.     PRINT "RANGE FROM .01 TO .05."
  227.     PRINT
  228.     PRINT "     EFFICIENCY FACTOR ( NON-DIMENSIONAL )"
  229.     PRINT
  230.     PRINT "THIS IS A NON-DIMENSIONAL NUMBER WHICH MUST BE DETERMINED FROM WIND TUNNEL TEST";
  231.     PRINT "OR ESTIMATED NUMERICALLY. TYPICAL VALUES RANGE FROM .6 TO .9."
  232.     PRINT
  233.     CALL KEYCHECK
  234.     CLS
  235.     PRINT
  236.     PRINT
  237.     PRINT "     AFTER THE PROGRAM HAS RUN, IT WILL ASK THE USER FOR ANOTHER SELECTION. THE";
  238.     PRINT "USER SHOULD RESPOND WITH 'Y' IF HE OR SHE DESIRES THE SELECTION OR 'N' IF NOT."
  239.     PRINT
  240.     PRINT "     ANOTHER SELECTION ( Y = YES, N = NO ) ?"
  241.     PRINT
  242.     PRINT "THE USER SHOULD RESPOND WITH 'N' TO EXIT THE PROGRAM."
  243.     PRINT
  244.     CALL KEYCHECK
  245.     CLS
  246.     PRINT
  247.     PRINT "     PROGRAM 'GLIDER' OUTPUTS DATA ABOUT BOTH THE MAXIMUM RANGE AND MAXIMUM";
  248.     PRINT "ENDURANCE FLIGHT CONDITIONS OF THE BOOST GLIDER. THIS INFORMATION INCLUDES THE";
  249.     PRINT "GLIDE SPEED AND ANGLE, THE HORIZONTAL RANGE AND RATE-OF-DESCENT AND THE GLIDER";
  250.     PRINT "LIFT-TO-DRAG RATIO. THE GLIDE SPEED IS PRINTED IN METERS PER SECOND AND THE";
  251.     PRINT "RATE-OF-DESCENT IS IN METERS PER MINUTE. THE HORIZONTAL RANGE IS GIVEN IN METERS";
  252.     PRINT "AND THE GLIDE ANGLE IS IN DEGREES. THE LIFT-TO-DRAG RATIO IS NON-DIMENSIONAL."
  253.     PRINT
  254.     PRINT "     FOR USERS WHO MAY WANT TO SEE OTHER VARIABLES COMPUTED BY THE SOFTWARE,";
  255.     PRINT "'RHOSITE' IS THE AMBIENT DENSITY AT THE FLYING SITE AND 'RHO' IS THE DENSITY";
  256.     PRINT "AT THE INITIAL FLIGHT ALTITUDE. THE ASPECT RATIO OF THE GLIDER IS COMPUTED IN";
  257.     PRINT "THE VARIABLE 'ASPECT'.";
  258.     CALL KEYCHECK
  259.  
  260. END SUB
  261.  
  262. '*********************************************************
  263.  
  264. SUB KEYCHECK STATIC
  265.  
  266.     ' CHECK USER RESPONSE SUBROUTINE
  267.  
  268.     PRINT
  269.     PRINT
  270.     PRINT TAB(25);"< press any key to continue >"
  271.  
  272.     A$=""
  273.     WHILE A$=""
  274.       A$=INKEY$
  275.     WEND
  276.  
  277. END SUB
  278.